package my.sorter.service;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import my.sorter.bean.StaffInfo;
import my.sorter.bean.StaffSecurityInfo;
import my.sorter.bean.filter.StaffFilter;
import my.sorter.dao.model.Permission;
import my.sorter.dao.model.Role;
import my.sorter.dao.model.Staff;
import my.sorter.translator.out.MyMessage;

import java.util.List;

/**
 * 系统权限管理模块
 * @author zyf10
 */
public interface SecurityService {

    StaffSecurityInfo getSecurityInfo(Integer jobNumber);

    JSONObject getSecurityJson(Integer jobId);

    boolean updateSecurityJson(JSONObject securityJson);

    JSONObject getFullSecurityJson();

    boolean register(Staff staff);

    /**
     * 查询权限
     * @param permissionName
     * @return
     */
    List<Permission> getPermission(String permissionName);

    boolean deletePermission(List<String> permissionIds);

    /**
     * 创建权限
     * @param permission
     * @return
     */
    Boolean createPermission(Permission permission);

    /**
     * 更新权限
     * @param permission
     * @return
     */
    Boolean updatePermission(Permission permission);

    /**
     * 获取职工
     * @param filter
     * @return
     */
    List<Staff> getStaff(StaffFilter filter);

    /**
     * 获取职工角色
     * @param staffId
     * @return
     */
    Role getStaffRole(String staffId);

    /**
     * 获取角色的权限
     * @param roleId
     * @return
     */
    List<Permission> getRolePermissions(String roleId);

    /**
     * 更新职工信息
     * @param staff
     * @return
     */
    Boolean updateStaff(Staff staff);

    /**
     * 创建职工
     * @param staff
     * @return
     */
    Boolean createStaff(Staff staff);

    /**
     * 激活职工
     * @param staffId
     * @return
     */
    Boolean activeStaff(String staffId);

    /**
     * 冻结职工
     * @param staffId
     * @return
     */
    Boolean frozenStaff(String staffId);

    /**
     * 获取权限
     * @param roleName
     * @return
     */
    List<Role> getRole(String roleName);

    /**
     * 更新职工的权限
     * @param staffId
     * @param roleId
     * @return
     */
    Boolean updateStaffRole(String staffId,String roleId);

    /**
     * 创建角色，不附带权限，入参role中必须含有id
     * @param role
     * @return
     */
    Boolean createRole(Role role);

    /**
     * 更新角色的权限
     * @param roleId
     * @param permissionIds
     * @return
     */
    Boolean updateRolePermission(String roleId,List<String> permissionIds);

    /**
     * 删除角色
     * @param roleId
     * @return
     */
    Boolean deleteRole(String roleId);
}
